<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<!-- saved from url=(0013)about:internet -->
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style xmlns="" type="text/css">
    /* This style sets a margin around the entire page */
        html, body {
            margin: 10px;
        }

        p {
            font: normal 16px verdana, sans-serif;
            margin: 0;
            padding-bottom:12px;
        }

        h1 {
            font: bold 25px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h2 {
            font: bold 19px verdana, sans-serif;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h3 {
            font: bold 19px verdana, sans-serif !important;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        li {
            font: normal 16px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 18px;
            padding-top: 0;
            padding-bottom: 0;
        }

        .pdparam {
            font: italic 16px verdana, sans-serif;
        }

                .term {
                        font: italic 16px verdana, sans-serif;
                        font-weight: normal;
                }

                .type {
                        font: normal 16px verdana, sans-serif !important;
                }

                .parameter {
                        font-style: italic;
                        }

        a:link, a:visited {
            color: blue;
            text-decoration: none;
            font: normal 16px;
        }

        a:hover {
            background-color: #FFFF99;
            font: normal 16px;
        }

        div.funcsynopsis {
            text-align: left;
            background-color: #e6e6e6;
            font: normal 16px verdana, sans-serif;
                        padding-top: 10px;
                        padding-bottom: 10px;
        }

        div.funcsynopsis table {
            border-collapse: separate;
            font: normal 16px verdana, sans-serif;
        }

        div.funcsynopsis td {
            background-color: #e6e6e6;
            border: 0 solid #000;
            padding: 1px;
            font: normal 16px verdana, sans-serif;
        }

        div.refsect1 {
            font-family: verdana, sans-serif;
            font-size: 16px;
        }

        code.constant {
            font: normal 16px courier new, monospace !important;
        }

                span.errorname {
            font: normal 16px verdana, sans-serif !important;
        }

        code.function {
            font: bold 16px verdana, sans-serif !important;
        }

        b.fsfunc {
            font: bold 16px verdana, sans-serif !important;
        }

        code.varname {
            font: italic 16px verdana, sans-serif;
        }

        code.replaceable {
            font: italic 16px courier new, monospace;
        }

        code.funcdef {
            font: normal 16px verdana, sans-serif !important;
        }

        .citerefentry {
            font: normal 16px verdana, sans-serif !important;
        }

        .parameter {
            font-style: italic;
        }

        code.fsfunc {
            font: normal 16px verdana, sans-serif !important;
        }

        /* PARAMETER: This style controls spacing between the terms in Parameter section */
        dt {
            margin-top: 15px;
        }

        /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
        div.refsect1 table {
            width: 100%;
                        margin-top: 10px;
            background-color: #FFF;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
                        font: normal 16px verdana, sans-serif;
        }

        div.refsect1 th {
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: bold 16px verdana, sans-serif;
        }

        div.refsect1 td {
            background-color: #FFF;
            padding: 5px;
            vertical-align: text-top;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: normal 16px verdana, sans-serif;
        }

                  div.refsect1 p{
            font: normal 16px verdana, sans-serif;
            margin-top: 8px;
            margin-bottom: 8px;
            padding-top: 0;
            padding-bottom: 0;
        }


        /* EXAMPLE: These styles apply only to the Example section */
        div.refsect2 {
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 table {
            margin-top: 0;
            background-color: #e6e6e6;
            width: 100%;
            border: 0 solid #000;
            padding: 2px;
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 td {
            background-color: #e6e6e6;
            font: normal 16px courier new, monospace !important;
                        white-space:pre;
        }

        /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
        div.refsect3 {
            font: normal 11px verdana, sans-serif;
            margin-top: 50px;
            margin-bottom: 20px;
            padding-top: 0;
            padding-bottom: 0;
        }

</style>
    <title>clGetSupportedImageFormats</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
    <meta name="keywords" content="clGetSupportedImageFormats" />
  </head>
  <body>
    <div class="refentry">
      <a id="id-1"></a>
      <div class="titlepage"></div>
      <div xmlns="" class="refnamediv">
        <a xmlns="http://www.w3.org/1999/xhtml" id="clGetSupportedImageFormats"></a>
        <h1>
            clGetSupportedImageFormats
        </h1>
        <p>
            Get the list of image formats supported by an OpenCL implementation.
        </p>
      </div>
      <div class="refsynopsisdiv">
        <h2></h2>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
            <a class="link" href="scalarDataTypes.html" target="pagedisplay">cl_int</a>
            <strong class="fsfunc">clGetSupportedImageFormats</strong>
          (</code>
                <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_context</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">context</var>, </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="enums.html#cl_mem_flags" target="pagedisplay">cl_mem_flags</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">flags</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="enums.html#cl_mem_object_type" target="pagedisplay">cl_mem_object_type</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">image_type</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">cl_uint</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">num_entries</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="cl_image_format.html" target="pagedisplay">cl_image_format</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*image_formats</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">cl_uint</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*num_image_formats</var><code>)</code></td>
            </tr>
          </table>
        </div>
      </div>
      <div class="refsect1">
        <a id="parameters"></a>
        <h2>Parameters</h2>
        <div class="variablelist">
          <dl class="variablelist">
            <dt>
              <span class="term"> <code class="varname"> context </code> </span>
            </dt>
            <dd>
              <p>
                        A valid OpenCL context on which the image object(s) will be created.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> flags </code> </span>
            </dt>
            <dd>
              <p>
                        A bit-field that is used to specify allocation and usage information about
                        the image memory object being queried and is described in the table below.
                        To get a list of supported image 
                        formats that can be read from or written to by a 
                        kernel, <code class="varname">flags</code> must be set to 
                        <code class="constant">CL_MEM_READ_WRITE</code> 
                        (get a list of images that can be read from and written 
                        to by different kernel instances when correctly ordered 
                        by event dependencies),
                        <code class="constant">CL_MEM_READ_ONLY</code> (list of images 
                        that can be read from by a kernel) or 
                        <code class="constant">CL_MEM_WRITE_ONLY</code> (list of images 
                        that can be written to by a kernel). To get a list of 
                        supported image formats that can be both read from and 
                        written to by a kernel, <code class="varname">flags</code> must be set 
                        to <code class="constant">CL_MEM_KERNEL_READ_AND_WRITE</code>.
                        Please see section 5.3.2.2 for clarification.
                    </p>
              <div class="informaltable">
                <table class="informaltable" border="1">
                  <colgroup>
                    <col align="left" class="col1" />
                    <col />
                  </colgroup>
                  <thead>
                    <tr>
                      <th align="left">cl_mem_flags</th>
                      <th align="left">Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_READ_WRITE</code>
                      </td>
                      <td align="left">
              This flag specifies that the memory object will be read and written by a kernel. This
              is the default.
            </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_WRITE_ONLY</code>
                      </td>
                      <td align="left">
              <p>
                This flag specifies that the memory object will be written but not read by
                a kernel.
              </p>

              <p>
                Reading from a buffer or image object created with
                <code class="constant">CL_MEM_WRITE_ONLY</code> inside a kernel is undefined.
              </p>

              <p>
                <code class="constant">CL_MEM_READ_WRITE</code> and <code class="constant">CL_MEM_WRITE_ONLY</code>
                are mutually exclusive.
              </p>
            </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_READ_ONLY</code>
                      </td>
                      <td align="left">
              <p>
                This flag specifies that the memory object is a read-only memory object when
                used inside a kernel.
              </p>

              <p>
                Writing to a buffer or image object created with
                <code class="constant">CL_MEM_READ_ONLY</code> inside a kernel is undefined.
              </p>

              <p>
                <code class="constant">CL_MEM_READ_WRITE</code> or <code class="constant">CL_MEM_WRITE_ONLY</code>
                and <code class="constant">CL_MEM_READ_ONLY</code> are mutually exclusive.
              </p>
            </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_USE_HOST_PTR</code>
                      </td>
                      <td align="left">
              <p>
                This flag is valid only if <code class="varname">host_ptr</code> is not NULL. If
                specified, it indicates that the application wants the OpenCL implementation
                to use memory referenced by <code class="varname">host_ptr</code> as the storage bits
                for the memory object.
              </p>

              <p>
                OpenCL implementations are allowed to cache the buffer contents pointed to by
                <code class="varname">host_ptr</code> in device memory. This cached copy can be used when
                kernels are executed on a device.
              </p>

              <p>
                The result of OpenCL commands that operate on multiple buffer objects created with
                the same <code class="varname">host_ptr</code> or overlapping host regions is considered
                to be undefined.
              </p>

              
            </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_ALLOC_HOST_PTR</code>
                      </td>
                      <td align="left">
              <p>
                This flag specifies that the application wants the OpenCL implementation to
                allocate memory from host accessible memory.
              </p>

              <p>
                <code class="constant">CL_MEM_ALLOC_HOST_PTR</code> and
                <code class="constant">CL_MEM_USE_HOST_PTR</code> are mutually exclusive.
              </p>
            </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_COPY_HOST_PTR</code>
                      </td>
                      <td align="left">
              <p>
                This flag is valid only if <code class="varname">host_ptr</code> is not NULL. If specified,
                it indicates that the application wants the OpenCL implementation to allocate
                memory for the memory object and copy the data from memory referenced by
                <code class="varname">host_ptr</code>.
              </p>

              <p>
                <code class="constant">CL_MEM_COPY_HOST_PTR</code> and
                <code class="constant">CL_MEM_USE_HOST_PTR</code> are mutually exclusive.
              </p>

              <p>
                <code class="constant">CL_MEM_COPY_HOST_PTR</code> can be used with
                <code class="constant">CL_MEM_ALLOC_HOST_PTR</code> to initialize the contents of the
                <span class="type">cl_mem</span> object allocated using host-accessible (e.g.  PCIe) memory.
              </p>
            </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_HOST_WRITE_ONLY</code>
                      </td>
                      <td align="left">
              <p>
                This flag specifies that the host will only write to the memory object (using
                OpenCL APIs that enqueue a write or a map for write).  This can be used to optimize
                write access from the host (e.g. enable write-combined allocations for memory
                objects for devices that communicate with the host over a system bus such as PCIe).
              </p>
            </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_HOST_READ_ONLY</code>
                      </td>
                      <td align="left">
              <p>
                This flag specifies that the host will only read the memory object (using OpenCL
                APIs that enqueue a read or a map for read).
              </p>

              <p>
                <code class="constant">CL_MEM_HOST_WRITE_ONLY</code> and
                <code class="constant">CL_MEM_HOST_READ_ONLY</code> are mutually exclusive.
              </p>
            </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_HOST_NO_ACCESS</code>
                      </td>
                      <td align="left">
              <p>
                This flag specifies that the host will not read or write the memory object.
              </p>

              <p>
                <code class="constant">CL_MEM_HOST_WRITE_ONLY</code> or
                <code class="constant">CL_MEM_HOST_READ_ONLY</code> and
                <code class="constant">CL_MEM_HOST_NO_ACCESS</code> are mutually exclusive.
              </p>
            </td>
                    </tr>
                  </tbody>
                </table>
              </div>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> image_type </code> </span>
            </dt>
            <dd>
              <p>
                      Describes the image type and must be either
                      <code class="constant">CL_MEM_OBJECT_IMAGE1D</code>,
                      <code class="constant">CL_MEM_OBJECT_IMAGE1D_BUFFER</code>,
                      <code class="constant">CL_MEM_OBJECT_IMAGE2D</code>,
                      <code class="constant">CL_MEM_OBJECT_IMAGE3D</code>,
                      <code class="constant">CL_MEM_OBJECT_IMAGE1D_ARRAY</code> or
                      <code class="constant">CL_MEM_OBJECT_IMAGE2D_ARRAY</code>.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> num_entries </code> </span>
            </dt>
            <dd>
              <p>
                      Specifies the number of entries that can be returned in the memory location
                      given by <code class="varname">image_formats</code>.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> image_formats </code> </span>
            </dt>
            <dd>
              <p>
                      A pointer to a memory location where the list of
                      supported image formats are returned. Each entry describes a
                      <a class="citerefentry" href="cl_image_format.html"><span class="citerefentry"><span class="refentrytitle">cl_image_format</span></span></a>
                      structure supported by the OpenCL implementation. If
                      <code class="varname">image_formats</code> is NULL, it is ignored.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> num_image_formats </code> </span>
            </dt>
            <dd>
              <p>
                      The actual number of supported image formats for a
                      specific <code class="varname">context</code> and values specified by
                      <code class="varname">flags</code>. If <code class="varname">num_image_formats</code> is NULL,
                      it is ignored.
                    </p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1">
        <a id="notes"></a>
        <h2>Notes</h2>
        <p>
          <code class="function">clGetSupportedImageFormats</code> can be used to get the list of image
          formats supported by an OpenCL implementation when the following information about
          an image memory object is specified:
        </p>
        <div class="itemizedlist">
          <ul class="itemizedlist" style="list-style-type: disc; ">
            <li class="listitem" style="list-style-type: disc">
                Context
            </li>
            <li class="listitem" style="list-style-type: disc">
                Image type - 1D, 2D, or 3D image, 1D image buffer, 1D or 2D image array.
            </li>
            <li class="listitem" style="list-style-type: disc">
                Image object allocation information
            </li>
          </ul>
        </div>
        <p>
            <code class="function">clGetSupportedImageFormats</code> returns a union of image formats
            supported by all devices in the context.
        </p>
        <p>
            If <code class="constant">CL_DEVICE_IMAGE_SUPPORT</code> specified in table 4.3 
            (see <a class="citerefentry" href="clGetDeviceInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceInfo</span></span></a>) 
            is <code class="constant">CL_TRUE</code>, the values assigned to 
            <code class="constant">CL_DEVICE_MAX_READ_IMAGE_ARGS</code>, <code class="constant">CL_DEVICE_MAX_WRITE_IMAGE_ARGS</code>, 
            <code class="constant">CL_DEVICE_IMAGE2D_MAX_WIDTH</code>, <code class="constant">CL_DEVICE_IMAGE2D_MAX_HEIGHT</code>, 
            <code class="constant">CL_DEVICE_IMAGE3D_MAX_WIDTH</code>, <code class="constant">CL_DEVICE_IMAGE3D_MAX_HEIGHT</code>, 
            <code class="constant">CL_DEVICE_IMAGE3D_MAX_DEPTH</code> and <code class="constant">CL_DEVICE_MAX_SAMPLERS</code> by the 
            implementation must be greater than or equal to the minimum values specified in table 4.3
            (see <a class="citerefentry" href="clGetDeviceInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceInfo</span></span></a>).
        </p>
        <h4><a id="id-1.6.6"></a>Minimum List of Supported Image Formats</h4>
        <p>
            For 1D, 1D image from buffer, 2D, 3D image objects, 1D and 2D image array objects, the 
            mandated minimum list of image formats that must be supported by all devices (that can be read 
            from or written to by a kernel but not both) that support images is described 
            in the table below (Table 5.8a):
        </p>
        <div class="informaltable">
          <table class="informaltable" border="1">
            <colgroup>
              <col align="left" class="col1" />
              <col align="left" class="col2" />
              <col align="left" class="col3" />
              <col align="left" class="col4" />
            </colgroup>
            <thead>
              <tr>
                <th align="left">
                  <div class="literallayout">
                    <p>num_channels</p>
                  </div>
                </th>
                <th align="left">
                  <div class="literallayout">
                    <p>channel_order</p>
                  </div>
                </th>
                <th align="left">
                  <div class="literallayout">
                    <p>channel_data_type</p>
                  </div>
                </th>
                <th align="left">
                  <div class="literallayout">
                    <p>read/write</p>
                  </div>
                </th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <div class="literallayout">
                    <p>1</p>
                  </div>
                </td>
                <td align="left">
                  <div class="literallayout">
                    <p>CL_R</p>
                  </div>
                </td>
                <td align="left"><div class="literallayout"><p>CL_UNORM_INT8<br />
CL_UNORM_INT16<br />
CL_SNORM_INT8<br />
CL_SNORM_INT16<br />
<br />
CL_SIGNED_INT8<br />
CL_SIGNED_INT16<br />
CL_SIGNED_INT32<br />
CL_UNSIGNED_INT8<br />
CL_UNSIGNED_INT16<br />
CL_UNSIGNED_INT32<br />
<br />
CL_HALF_FLOAT<br />
CL_FLOAT<br />
</p></div>
                </td>
                <td align="left">
                  <div class="literallayout">
                    <p>read+write</p>
                  </div>
                </td>
              </tr>
              <tr>
                <td align="left">
                  <div class="literallayout">
                    <p>1</p>
                  </div>
                </td>
                <td align="left">
                  <div class="literallayout">
                    <p>CL_DEPTH</p>
                  </div>
                </td>
                <td align="left"><div class="literallayout"><p>CL_UNORM_INT16<br />
CL_FLOAT<br />
</p></div>
                </td>
                <td align="left"><div class="literallayout"><p>read+write</p></div>
<code class="constant">CL_DEPTH</code> channel order is supported only for 2D image and 2D image array objects.
                </td>
              </tr>
              <tr>
                <td align="left">
                  <div class="literallayout">
                    <p>2</p>
                  </div>
                </td>
                <td align="left">
                  <div class="literallayout">
                    <p>CL_RG</p>
                  </div>
                </td>
                <td align="left"><div class="literallayout"><p>CL_UNORM_INT8<br />
CL_UNORM_INT16<br />
CL_SNORM_INT8<br />
CL_SNORM_INT16<br />
<br />
CL_SIGNED_INT8<br />
CL_SIGNED_INT16<br />
CL_SIGNED_INT32<br />
CL_UNSIGNED_INT8<br />
CL_UNSIGNED_INT16<br />
CL_UNSIGNED_INT32<br />
<br />
CL_HALF_FLOAT<br />
CL_FLOAT<br />
</p></div>
                </td>
                <td align="left">
                  <div class="literallayout">
                    <p>read+write</p>
                  </div>
                </td>
              </tr>
              <tr>
                <td align="left">
                  <div class="literallayout">
                    <p>4</p>
                  </div>
                </td>
                <td align="left">
                  <div class="literallayout">
                    <p>CL_RGBA</p>
                  </div>
                </td>
                <td align="left"><div class="literallayout"><p>CL_UNORM_INT8<br />
CL_UNORM_INT16<br />
CL_SNORM_INT8<br />
CL_SNORM_INT16<br />
<br />
CL_SIGNED_INT8<br />
CL_SIGNED_INT16<br />
CL_SIGNED_INT32<br />
CL_UNSIGNED_INT8<br />
CL_UNSIGNED_INT16<br />
CL_UNSIGNED_INT32<br />
<br />
CL_HALF_FLOAT<br />
CL_FLOAT<br />
</p></div>
                </td>
                <td align="left">
                  <div class="literallayout">
                    <p>read+write</p>
                  </div>
                </td>
              </tr>
              <tr>
                <td align="left">
                  <div class="literallayout">
                    <p>4</p>
                  </div>
                </td>
                <td align="left">
                  <div class="literallayout">
                    <p>CL_BGRA</p>
                  </div>
                </td>
                <td align="left">
                  <div class="literallayout">
                    <p>CL_UNORM_INT8</p>
                  </div>
                </td>
                <td align="left">
                  <div class="literallayout">
                    <p>read+write</p>
                  </div>
                </td>
              </tr>
              <tr>
                <td align="left">
                  <div class="literallayout">
                    <p>4</p>
                  </div>
                </td>
                <td align="left">
                  <div class="literallayout">
                    <p>CL_sRGBA</p>
                  </div>
                </td>
                <td align="left">
                  <div class="literallayout">
                    <p>CL_UNORM_INT8</p>
                  </div>
                </td>
                <td align="left">
                    read+write if the 
                    <a class="citerefentry" href="cl_khr_srgb_image_writes.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_srgb_image_writes</span></span></a> 
                    extension is supported, else read only.
                    sRGB channel order support is not required for 1D image buffers.
                    Writes to images with sRGB channel orders
                    requires device support of the 
                    <a class="citerefentry" href="cl_khr_srgb_image_writes.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_srgb_image_writes</span></span></a> 
                    extension.
                </td>
              </tr>
              <tr>
                <td align="left">
                  <div class="literallayout">
                    <p>1</p>
                  </div>
                </td>
                <td align="left">
                  <div class="literallayout">
                    <p>CL_DEPTH_STENCIL</p>
                  </div>
                </td>
                <td align="left"><div class="literallayout"><p>CL_UNORM_INT24<br />
CL_FLOAT<br />
</p></div>
                </td>
                <td align="left">
                  <div class="literallayout">
                    <p>read only (applies if the<br />
<a class="citerefentry" href="cl_khr_gl_depth_images.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_depth_images</span></span></a><br />
extension is enabled)</p>
                  </div>
                </td>
              </tr>
            </tbody>
          </table>
        </div>
        <p>
            For 1D, 1D image from buffer, 2D, 3D image objects, 1D and 2D image array objects, the 
            mandated minimum list of image formats that must be supported by all devices (that can be read 
            from and written to by a kernel) that support images is described 
            in the table below (Table 5.8b):
        </p>
        <div class="informaltable">
          <table class="informaltable" border="1">
            <colgroup>
              <col align="left" class="col1" />
              <col align="left" class="col2" />
              <col align="left" class="col3" />
            </colgroup>
            <thead>
              <tr>
                <th align="left">
                  <div class="literallayout">
                    <p>num_channels</p>
                  </div>
                </th>
                <th align="left">
                  <div class="literallayout">
                    <p>channel_order</p>
                  </div>
                </th>
                <th align="left">
                  <div class="literallayout">
                    <p>channel_data_type</p>
                  </div>
                </th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <div class="literallayout">
                    <p>1</p>
                  </div>
                </td>
                <td align="left">
                  <div class="literallayout">
                    <p>CL_R</p>
                  </div>
                </td>
                <td align="left"><div class="literallayout"><p>CL_UNORM_INT8<br />
CL_SIGNED_INT8<br />
CL_SIGNED_INT16<br />
CL_SIGNED_INT32<br />
CL_UNSIGNED_INT8<br />
CL_UNSIGNED_INT16<br />
CL_UNSIGNED_INT32<br />
CL_HALF_FLOAT<br />
CL_FLOAT<br />
</p></div>
                </td>
              </tr>
              <tr>
                <td align="left">
                  <div class="literallayout">
                    <p>4</p>
                  </div>
                </td>
                <td align="left">
                  <div class="literallayout">
                    <p>CL_RGBA</p>
                  </div>
                </td>
                <td align="left"><div class="literallayout"><p>CL_UNORM_INT8<br />
CL_UNORM_INT16<br />
CL_SIGNED_INT8<br />
CL_SIGNED_INT16<br />
CL_SIGNED_INT32<br />
CL_UNSIGNED_INT8<br />
CL_UNSIGNED_INT16<br />
CL_UNSIGNED_INT32<br />
CL_HALF_FLOAT<br />
CL_FLOAT<br />
</p></div>
                </td>
              </tr>
              <tr>
                <td align="left">
                  <div class="literallayout">
                    <p>1</p>
                  </div>
                </td>
                <td align="left">
                  <div class="literallayout">
                    <p>CL_DEPTH_STENCIL (applies if the<br />
<a class="citerefentry" href="cl_khr_gl_depth_images.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_depth_images</span></span></a><br />
extension is enabled)</p>
                  </div>
                </td>
                <td align="left"><div class="literallayout"><p>CL_UNORM_INT24<br />
CL_FLOAT<br />
</p></div>
                </td>
              </tr>
            </tbody>
          </table>
        </div>
        <h4><a id="id-1.6.11"></a> Image format mapping to OpenCL C image access qualifiers</h4>
        <p>
Image arguments to kernels may have the <code class="constant">read_only</code>, <code class="constant">write_only</code> or <code class="constant">read_write</code>
qualifier. Not all image formats supported by the device and platform are valid to be passed to all
of these access qualifiers. For each access qualifier, only images whose format is in the list of
formats returned by clGetSupportedImageFormats with the given flag arguments in the table below are
permitted. It is not valid to pass an image supporting writing as both a read_only image and a
write_only image parameter, or to a read_write image parameter and any other image parameter.
        </p>
        <div class="informaltable">
          <table class="informaltable" border="1">
            <colgroup>
              <col align="left" class="col1" />
              <col align="left" class="col2" />
            </colgroup>
            <thead>
              <tr>
                <th align="left">
                  <div class="literallayout">
                    <p>Access Qualifier</p>
                  </div>
                </th>
                <th align="left">
                  <div class="literallayout">
                    <p>cl_mem_flags</p>
                  </div>
                </th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <code class="constant">read_only</code>
                </td>
                <td align="left">
<code class="constant">CL_MEM_READ_ONLY</code>,
<code class="constant">CL_MEM_READ_WRITE</code>,
<code class="constant">CL_MEM_KERNEL_READ_AND_WRITE</code>
                </td>
              </tr>
              <tr>
                <td align="left">
                  <code class="constant">write_only</code>
                </td>
                <td align="left">
<code class="constant">CL_MEM_WRITE_ONLY</code>,
<code class="constant">CL_MEM_READ_WRITE</code>,
<code class="constant">CL_MEM_KERNEL_READ_AND_WRITE</code>
                </td>
              </tr>
              <tr>
                <td align="left">
                  <code class="constant">read_write</code>
                </td>
                <td align="left">
<code class="constant">CL_MEM_KERNEL_READ_AND_WRITE</code>
                </td>
              </tr>
            </tbody>
          </table>
        </div>
        <h4><a id="id-1.6.14"></a>Additional notes if the <a class="citerefentry" href="cl_khr_gl_depth_images.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_depth_images</span></span></a>
extension is enabled:</h4>
        <p>
            For the image format given by channel order of 
            <code class="constant">CL_DEPTH_STENCIL</code> and channel data type of 
            <code class="constant">CL_UNORM_INT24</code>, the depth is 
            stored as an unsigned normalized 24-bit value.
        </p>
        <p>
            For the image format given by channel order of 
            <code class="constant">CL DEPTH_STENCIL</code> and channel data type of
            <code class="constant">CL_FLOAT</code>, each pixel is two 32-bit values. 
            The depth is stored as a single precision floating
            point value followed by the stencil which is stored as a 8-bit integer value.
        </p>
        <p>
            The stencil value cannot be read or written using the 
            <code class="function">read_imagef</code> and 
            <code class="function">write_imagef</code> 
            built-in functions in an OpenCL kernel.
        </p>
        <p>
            Depth image objects with an image channel order = 
            <code class="constant">CL_DEPTH_STENCIL</code> cannot be used as 
            arguments to 
            <a class="citerefentry" href="clEnqueueReadImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueReadImage</span></span></a>, 
            <a class="citerefentry" href="clEnqueueWriteImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueWriteImage</span></span></a>, 
            <a class="citerefentry" href="clEnqueueCopyImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueCopyImage</span></span></a>, 
            <a class="citerefentry" href="clEnqueueCopyImageToBuffer.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueCopyImageToBuffer</span></span></a>, 
            <a class="citerefentry" href="clEnqueueCopyBufferToImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueCopyBufferToImage</span></span></a>, 
            <a class="citerefentry" href="clEnqueueMapImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapImage</span></span></a> and 
            <a class="citerefentry" href="clEnqueueFillImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueFillImage</span></span></a> 
            and will return a <span class="errorname">CL_INVALID_OPERATION</span> error.
        </p>
      </div>
      <div class="refsect1">
        <a id="errors"></a>
        <h2>Errors</h2>
        <p>
            Returns <span class="errorname">CL_SUCCESS</span> if the function is executed successfully.
            Otherwise, it returns one of the following errors:
        </p>
        <div class="itemizedlist">
          <ul class="itemizedlist" style="list-style-type: disc; ">
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_CONTEXT</span> if <code class="varname">context</code> is not a valid context.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_VALUE</span> if <code class="varname">flags</code> or
                <code class="varname">image_type</code> are not valid, or if <code class="varname">num_entries</code>
                is 0 and <code class="varname">image_formats</code> is not NULL.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_OUT_OF_RESOURCES</span> if there is a failure to allocate
              resources required by the OpenCL implementation on the device.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_OUT_OF_HOST_MEMORY</span> if there is a failure to allocate
              resources required by the OpenCL implementation on the host.
            </li>
          </ul>
        </div>
      </div>
      <div class="refsect1">
        <a id="specification"></a>
        <h2>Specification</h2>
        <p>
            <img src="pdficon_small1.gif" />

            <a href="https://www.khronos.org/registry/cl/specs/opencl-2.1.pdf#namedest=clGetSupportedImageFormats" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>Also see</h2>
        <p>
            <a class="citerefentry" href="cl_image_format.html"><span class="citerefentry"><span class="refentrytitle">cl_image_format</span></span></a>,
            <a class="citerefentry" href="clGetDeviceInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceInfo</span></span></a>
        </p>
      </div>
      <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>Copyright © 2007-2015 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.
</div>
    </div>
  </body>
</html>
